Packet communications performed using communication protocols such as transmission control protocol (TCP)/Internet protocol (IP) are in widespread use. In a network of a packet communication, congestion may occur in a communication apparatus (packet relay apparatus) relaying a packet.
To avoid congestion, the packet relay apparatus may discard some of a received number packets to be relayed. For example, if a transmission buffer becomes full in a method called tail drop, all packets to arrive thereafter are discarded until the transmission buffer is emptied. In a method called random early detection (RED), if the number of packets retained exceeds a threshold value even before a transmission buffer is full, packets to arrive are discarded stochastically.
If the packet relay apparatus discards a packet, a communication apparatus, which is a source of the discarded packet does not receive an expected acknowledgement (ACK) from a communication apparatus that is the intended destination of the packet. The source communication apparatus transmits a packet and then waits until a specific condition is satisfied (for example, a specific time period has elapsed since the transmission). If an expected ACK is not received, the source communication apparatus retransmits the packet on the assumption that the packet has been discarded. This method lowers a transmission rate of the source communication apparatus and restricts an inflow of packets to the packet relay apparatus.
A frame discarding method is available as a technique of discarding packets. In the frame discarding method, a frame is tagged with time information before being retained on a transmission buffer, retention time of the frame is detected based on the time information, and the frame is discarded when the retention time exceeds a retention permission time (for example, see Japanese Laid-open Patent Publication No. 2009-5193).
Congestion control methods free from packet discarding have been studied. In one such method, a frame received first, from among frames retained in a queue, is not transmitted for a specific period of time after congestion is detected, and a subsequent frame is transmitted earlier (Japanese Laid-open Patent Publication No. 7-66838). If the packet relay apparatus suspends the transmission of a packet, a communication apparatus as a source of a packet receives an expected ACK at a delayed timing. This method also restricts the inflow of packets to the packet relay apparatus.
From the standpoint of network communication efficiency, congestion control is performed not to retransmit the packet. In the method discussed in Japanese Laid-open Patent Publication No. 7-66838, the packet transmission is suspended for a constant period of time. The packet retransmission is not sufficiently controlled for the reason described below.
The timing of the packet retransmission is not necessarily determined by a time elapse from the transmission of the packet from the source communication apparatus. For example, if a communication apparatus as a destination receives a packet not agreeing with a sequence number in a high-speed retransmission mechanism of TCP, the destination communication apparatus transmits an ACK called a duplicate ACK to a communication apparatus as a source. Upon receiving the duplicate ACKs of a specific number, the source communication apparatus retransmits the packet as a result of determining that the packet has been discarded. In other words, a retransmission occurs before a specific time has elapsed since the packet transmission.